package cn.anosi.service.auth;

import java.util.List;

import cn.anosi.entity.auth.Permission;
import cn.anosi.entity.auth.User;
import cn.anosi.entity.auth.UserRole;
import cn.anosi.page.PageResponseBean;
import cn.anosi.page.Pager;
import cn.anosi.service.base.BaseService;

public interface UserService extends BaseService<User> {
	public User login(String username, String password);
	
	/**
	 * 物理分页
	 * @param pager
	 * @return
	 */
	public PageResponseBean<User> findAll(Pager pager);

	/**
	 * 禁用用户
	 * @param id
	 * @param locked
	 * @return
	 */
	public int lock(Integer id, String locked);

	/**
	 * 根据名字模糊查询用户列表
	 * @param pager
	 * @param name
	 * @return
	 */
	public PageResponseBean<User> findAll(Pager pager, String name);

	/**
	 * 批量删除
	 * @param ids
	 * @return
	 */
	public int batchDel(List<Integer> ids);

	/**
	 * 保存用户，并关联角色
	 * @param user
	 * @param roleId
	 * @return
	 */
	public UserRole saveUser(User user, Integer roleId);

	/**
	 * 获取用户对应的菜单
	 * @param id
	 * @return
	 */
	public List<Permission> menus(Integer id);
	
	/**
	 * 获取用户权限列表
	 * @param id
	 * @return
	 */
	public List<Permission> permissions(Integer id);
	
	/**
	 * 根据用户名查询用户
	 * @param username
	 * @return
	 */
	public User findByUsername(String username);
	
	public List<String> findUserRoleNames(Integer id);

	/**
	 * 查找用户对应的角色id
	 * @param id
	 * @return
	 */
	public List<Integer> roleIds(Integer id);

	/**
	 * 用户关联角色
	 * @param userId
	 * @param ids
	 * @return
	 */
	public int associateRole(Integer userId, List<Integer> ids);

	/**
	 * 上传用户头像
	 * @param id
	 * @param img
	 * @return
	 */
	public int update(Integer id, byte[] img);
}
